package com.xxx.mall.mapper;

import com.xxx.mall.model.Category;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.xxx.mall.vo.CategoryVO;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * <p>
 * 分类信息 Mapper 接口
 * </p>
 *
 * @author 邢晨旭
 * @since 2023-11-15
 */
public interface CategoryMapper extends BaseMapper<Category> {

    /**
     * 获取分类列表
     * @param shopId 店铺id
     * @return 分类列表
     */
    List<CategoryVO> list(Long shopId);

    /**
     * 判断分类名称是否存在
     * @param shopId 店铺id
     * @param categoryId 分类id
     * @param name 分类名称
     * @return
     */
    int existCategoryName(@Param("shopId") Long shopId,@Param("categoryId") Long categoryId, @Param("name") String name);

    /**
     * 判断是否有子分类
     * @param id 分类id
     * @return 子分类数量
     */
    int existChildCategory(Long id);

    /**
     * 删除分类
     * @param id 分类id
     */
    void removeById(Long id);

    /**
     * 根据分类级别查询分类列表
     * @param shopId 租户id
     * @param level 分类级别
     * @return 分类列表
     */
    List<CategoryVO> ListByLevel(@Param("shopId") Long shopId, @Param("level") Integer level);

    /**
     * 根据父分类id查询分类列表
     * @param shopId 租户id
     * @param parentId 父分类id
     * @return 分类列表
     */
    List<CategoryVO> ListByParentId(@Param("shopId") Long shopId,@Param("parentId") Long parentId);

    List<Long> queryAllParentId(@Param("categoryId") Long categoryId);
}
